/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.zanotti.acessobanco;

import br.com.fatecpg.zanotti.modelo.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * Classe responsável por realizar toda a Manipulação de Dados referente a tabela Cliente do Banco de Dados.
 * @author F.L. Zanotti
 */
public class dmlCliente {

    /**
     * Método responsável pela rotina de INSERT no banco de dados
     * @param Cliente Objeto Cliente
     * @return boolean
     */
    public static boolean cadastrar(Cliente Cliente) {
        try {
            Connection con = AbreConexao.getConexao();

            String query = "INSERT INTO CLIENTE(cdcliente, cpfcliente, cdloja, nmcliente, " +
                    "nmendlogradouro, nmendnumero, nmendcomp, nmendbairro, nmendcidade, sgendestado" +
                    ", nmendcep, nmemail, dtnascimento, cdtelefone, rgcliente)VALUES" +
                    " (seq_cdcliente.NEXTVAL, ?, ?, ?, ?,?,?, ?,?,?,?,?,?,?,?)";

            PreparedStatement pst = con.prepareStatement(query);

            pst.setString(1, Cliente.getCPFCLIENTE());
            pst.setInt(2, Cliente.getCDLOJA());
            pst.setString(3, Cliente.getNMCLIENTE());
            pst.setString(4, Cliente.getNMENDLOGRADOURO());
            pst.setString(5, Cliente.getNMENDNUMERO());
            pst.setString(6, Cliente.getNMENDCOMP());
            pst.setString(7, Cliente.getNMENDBAIRRO());
            pst.setString(8, Cliente.getNMENDCIDADE());
            pst.setString(9, Cliente.getSGENDESTADO());
            pst.setString(10, Cliente.getNMENDCEP());
            pst.setString(11, Cliente.getNMEMAIL());
            pst.setString(12, Cliente.getDTNASCIMENTO());
            pst.setString(13, Cliente.getCDTELEFONE());
            pst.setString(14, Cliente.getRGCLIENTE());

            pst.execute();
            con.commit();
            con.close();
            pst.close();
            javax.swing.JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso");
            return true;
        } catch (SQLException e) {
            javax.swing.JOptionPane.showMessageDialog(null, e);
            return false;
        }

    }

    /**
     * Método responsável pela rotina de UPDATE no banco de dados
     * @param Cliente Objeto Cliente
     * @return boolean
     */
    public static boolean atualizar(Cliente Cliente) {
        try {
            Connection con = AbreConexao.getConexao();

            String query = "UPDATE CLIENTE SET " +
                    "cdloja = ?, " +
                    "nmcliente = ?, " +
                    "nmendlogradouro = ?, " +
                    "nmendnumero = ?, " +
                    "nmendcomp = ?, " +
                    "nmendbairro = ?, " +
                    "nmendcidade = ?, " +
                    "sgendestado = ?, " +
                    "nmendcep = ?, " +
                    "nmemail = ?, " +
                    "dtnascimento = ?, " +
                    "cdtelefone = ?, " +
                    "rgcliente = ?, " +
                    "cpfcliente = ?" +
                    "WHERE cdcliente = ?";

            PreparedStatement pst = con.prepareStatement(query);

            pst.setString(14, Cliente.getCPFCLIENTE());
            pst.setInt(1, Cliente.getCDLOJA());
            pst.setString(2, Cliente.getNMCLIENTE());
            pst.setString(3, Cliente.getNMENDLOGRADOURO());
            pst.setString(4, Cliente.getNMENDNUMERO());
            pst.setString(5, Cliente.getNMENDCOMP());
            pst.setString(6, Cliente.getNMENDBAIRRO());
            pst.setString(7, Cliente.getNMENDCIDADE());
            pst.setString(8, Cliente.getSGENDESTADO());
            pst.setString(9, Cliente.getNMENDCEP());
            pst.setString(10, Cliente.getNMEMAIL());
            pst.setString(11, Cliente.getDTNASCIMENTO());
            pst.setString(12, Cliente.getCDTELEFONE());
            pst.setString(13, Cliente.getRGCLIENTE());
            pst.setString(15, Cliente.getCDCLIENTE());

            pst.execute();
            con.commit();
            con.close();
            pst.close();
            javax.swing.JOptionPane.showMessageDialog(null, "Atualização realizada com sucesso");
            return true;
        } catch (SQLException e) {
            javax.swing.JOptionPane.showMessageDialog(null, e);
            return false;
        }
    }

    /**
     * Método responsável pela rotina de DELETE no banco de dados
     * @param cpf Código do Cliente
     * @return boolean
     */
    public static boolean deletar(String cpf) {
        try {
            Connection con = AbreConexao.getConexao();

            String query = "DELETE FROM CLIENTE " +
                    "WHERE CDCLIENTE = ?";

            PreparedStatement pst = con.prepareStatement(query);

            pst.setString(1, cpf);

            pst.execute();
            con.commit();
            con.close();
            pst.close();
            javax.swing.JOptionPane.showMessageDialog(null, "O cadastro foi apagado com sucesso");
            return true;
        } catch (SQLException e) {
            javax.swing.JOptionPane.showMessageDialog(null, e);
            return false;
        }
    }
    /**
     * Método responsável por modificar "Ultima Venda"(data) do Cliente que realizou a venda corrente.
     * @param cd Código do Cliente
     * @return boolean
     */
    public static boolean atualizarULTIMAVENDA(String cd) {
        try {
            Connection con = AbreConexao.getConexao();

            String query = "UPDATE CLIENTE SET " +
                    "dtultimacompra = TO_CHAR(sysdate, 'DD/MM/YY') " +
                    "WHERE cdcliente = ?";

            PreparedStatement pst = con.prepareStatement(query);


            pst.setString(1, cd);



            pst.execute();
            con.commit();
            con.close();
            pst.close();
            javax.swing.JOptionPane.showMessageDialog(null, "Atualização realizada com sucesso");
            return true;
        } catch (SQLException e) {
            javax.swing.JOptionPane.showMessageDialog(null, e);
            return false;
        }
    }
}
